package br.ufal.ic.p3.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import br.ufal.ic.p3.Interface.cliente.TelaClienteInserido;
import br.ufal.ic.p3.Interface.cliente.juridico.TelaJuridicoInserido;
import br.ufal.ic.p3.cliente.juridico.ClienteJuridico;

public class ClienteJuridicoDao {
	
	private DaoUtilidades daoUtilidades;

	public ClienteJuridicoDao() {
		daoUtilidades = new DaoUtilidades();
	}
	
	public void inserir(ClienteJuridico clienteJuridico) {

		Connection conn = null;
		java.sql.PreparedStatement stmt = null;
		int i = 0;

		try {

			conn = daoUtilidades.getConection();
			// inserindo endereco
			EnderecoDao enderecoDao = new EnderecoDao();
			enderecoDao.inserir(clienteJuridico.getEndereco());
			enderecoDao.idEndereco(clienteJuridico.getEndereco());
			int v = enderecoDao.idEndereco(clienteJuridico.getEndereco()); 
			//System.out.println("Endereco inserido em Cliente Juridico com sucesso!");
			// inserindo contato
			ContatoDao contatoDao = new ContatoDao();
			contatoDao.inserir(clienteJuridico.getContato());
			contatoDao.idContato(clienteJuridico.getContato());
			int w = contatoDao.idContato(clienteJuridico.getContato());
			//System.out.println("Contato inserido em Cliente Juridico com sucesso!");

			stmt = conn
					.prepareStatement("insert into CLIENTE_JURIDICO (razao_social, cnpj, responsavel, telefone_responsavel, "
							+ "idEndereco, idContato) values (?,?,?,?,?,?);");
			stmt.setString(++i, clienteJuridico.getRazaoSocial());
			stmt.setString(++i, clienteJuridico.getCnpj());
			stmt.setString(++i, clienteJuridico.getResponsavel());
			stmt.setString(++i, clienteJuridico.getTelefoneResponsavel());
			stmt.setInt(++i, v);
			stmt.setInt(++i, w);
			stmt.executeUpdate();

			TelaJuridicoInserido janela = new TelaJuridicoInserido();
			janela.setSize(440, 210);
			janela.setVisible(true);

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (stmt != null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

	public String cnpjClienteJuridico(ClienteJuridico clienteJuridico) {

		String v = "";
		Connection conn = null;
		java.sql.PreparedStatement stmt = null;
		try {
			conn = daoUtilidades.getConection();

			String consulta = "SELECT cnpj FROM `JURIDICO` WHERE cnpj = '"
					+ clienteJuridico.getCnpj() + "'";
			stmt = conn.prepareStatement(consulta);
			ResultSet rs = stmt.executeQuery();

			if (rs.next()) {
				v = rs.getString(1);
			}

			System.out.println("o CNPJ de " + clienteJuridico.getRazaoSocial() + " é:" + v);

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			daoUtilidades.release(stmt);
			daoUtilidades.release(conn);
		}
		System.out.println("IdEndereco: " + v);
		return v;
	}

	public ArrayList<String> carregarClientesJuridicos() {
		ArrayList<String> array = new ArrayList<String>();
		 
		Connection conn = null;
		Statement stmt = null;
		try {
			conn = daoUtilidades.getConection();

			stmt = conn.createStatement();

			String sql = "select * from JURIDICO;";
			ResultSet rs = stmt.executeQuery(sql);

			while (rs.next()) {
				String razaoSocial = rs.getString("razao_social");
				String cnpj = rs.getString("cnpj");
				array.add(razaoSocial+" "+cnpj);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return array;
	}

}
